//
//  ZNWBWelcomeView.swift
//  ZNWeibo
//
//  Created by FunctionMaker on 2017/8/21.
//  Copyright © 2017年 FunctionMaker. All rights reserved.
//

import UIKit
import SDWebImage

class ZNWBWelcomeView: UIView {
    
    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var nickLabel: UILabel!
    
    @IBOutlet weak var bottomCons: NSLayoutConstraint!
    
    
    class func welcomeView() -> ZNWBWelcomeView {
        let nib = UINib(nibName: "ZNWBWelcomeView", bundle: nil)
        let view = nib.instantiate(withOwner: nil, options: nil)[0] as! ZNWBWelcomeView
        view.frame = UIScreen.main.bounds
        
        return view
    }
    
    // 视图移到窗口上，表明视图已经显示，通过更新约束，实现动画
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 自动布局只是用来设置视图约束的，当添加到父视图上时才会根据约束来计算视图的frame（本质上是解多元一次方程组），最终确定视图位置
        // layoutIfNeeded就直接用视图自动布局来更新视图位置，执行之后，控件所在的位置就是 XIB 中的位置
        // 立刻执行约束，将调用layoutSubviews
        self.layoutIfNeeded()
        
        // 更新约束
        bottomCons.constant = bounds.size.height - 200
        
        UIView.animate(withDuration: 1,
                       delay: 0,
                       usingSpringWithDamping: 0.7,
                       initialSpringVelocity: 0,
                       options: [],
                       animations: {
            // 更新约束，重新设置视图的位置
            self.layoutIfNeeded()
        }) { (_) in
            UIView.animate(withDuration: 1, animations: {
                self.nickLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
    }
    
    // layoutSubviews是在自动布局完成之后，会自动调动。
    // 通常用于调整视图布局
//    override func layoutSubviews() {
//        
//    }
    
    // initWithCoder只是刚刚从XIB的二进制文件将视图数据加载完成，还没有与输出口建立联系。开发时，不要在此方法中处理UI。
//    required init?(coder aDecoder: NSCoder) {
//        
//    }
    
    // 视图数据加载完毕之后，就会调用
    override func awakeFromNib() {
        super.awakeFromNib()
        
        // 1. 设置头像
        guard let urlString = ZNWBNetworkManager.shared.userAccount.avatar_large,
              let url = URL(string: urlString)
        else {
            return
        }
        
        // 如果不指定占位图像，在下载失败后，之前的占位图像会被清空
        iconView.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "avatar_default_big"))
        
        // 2. 裁剪图片，不高效的做法，应用mask蒙板实现
        iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        iconView.layer.masksToBounds = true
    }
}
